package mysql;

import mysql.pojo.stu;
import org.junit.jupiter.api.Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;

/**
 * @author 宋鑫宇
 * @version 1.0
 * ResultSet 执行DQL语句的使用
 */
public class JDBC_03 {
    public static void main(String[] args) throws Exception {
        //注册驱动,jdk5之后可以不用写这行
        Class.forName("com.mysql.jdbc.Driver");
        //2.获取数据库连接
        String url = "jdbc:mysql://127.0.0.1:3306/db1";
        String username = "root";
        String password = "root";
        Connection coon = DriverManager.getConnection(url, username, password);
        //3.定义sql语句
        String sql = "select * from stu;";
        //4.获取执行sql的对象
        Statement sta = coon.createStatement();
        //5.执行sql,返回ResultSet对象
        ResultSet rs = sta.executeQuery(sql);

        //6.处理结果
        //  判断下一行是否为有效数据（不为null）
        while (rs.next()) {
            int id = rs.getInt("id");
            String name = rs.getString("name");
            double score = rs.getDouble("score");
            System.out.println(id + name + score);
            System.out.println("----------");
        }

        //7.释放资源
        coon.close();
        sta.close();
        rs.close();
    }
    /*
        查询stu 表数据，封装到stu对象中，并且储存到ArrayList集合里
        1.定义实体类stu
        2.查询数据，封装到stu对象中
        3.将stu对象存入ArrayList集合中
     */
    @Test
    public void resultSet() throws Exception{
        //创建ArrayList集合
        ArrayList<stu> list = new ArrayList<>();
        //注册驱动,jdk5之后可以不用写这行
        Class.forName("com.mysql.jdbc.Driver");
        //2.获取数据库连接
        String url = "jdbc:mysql://127.0.0.1:3306/db1?useSSL=false";
        String username = "root";
        String password = "root";
        Connection coon = DriverManager.getConnection(url, username, password);
        //3.定义sql语句
        String sql = "select * from stu;";
        //4.获取执行sql的对象
        Statement sta = coon.createStatement();
        //5.执行sql,返回ResultSet对象
        ResultSet rs = sta.executeQuery(sql);

        //6.处理结果
        //  判断下一行是否为有效数据（不为null）
        while (rs.next()) {
            //创建stu对象
            stu stu = new stu();
            //封装查询到的数据
            stu.setId(rs.getInt(1));
            stu.setName(rs.getString(2));
            stu.setSex(rs.getString(3).charAt(0));
            stu.setBirthday(rs.getString(4));
            stu.setScore(rs.getDouble(5));
            stu.setEmail(rs.getString(6));
            stu.setPhone(rs.getString(7));
            stu.setState(rs.getInt(8));
            stu.setStu_class(rs.getInt(9));
            //将封装好的对象添加到集合中
            list.add(stu);
            System.out.println("----------");
        }
        System.out.println(list);

        //7.释放资源
        coon.close();
        sta.close();
        rs.close();
    }
}
